package top.milkbox.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import top.milkbox.domain.Post;
import top.milkbox.info.R;
import top.milkbox.service.PostService;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/posts")
public class PostController {

    @Autowired
    private PostService postService;

    // 添加
    @PostMapping("/add.login")
    public R addPost(
            @CookieValue("token") String token,
            @RequestParam(required = false) MultipartFile[] fileList,
            @RequestParam(required = false) String content
    ) {
        R r = new R();
        if ((fileList == null || fileList.length == 0)
                && (content == null || content.equals(""))) {
            r.setFlag(false);
            r.setMessage("图片与文字至少上传一种");
            return r;
        }

        r.setFlag(postService.savePost(token, fileList, content));
        if (r.isFlag()) {
            r.setMessage("发布成功");
        } else {
            r.setMessage("发布失败");
        }
        return r;
    }

    /**
     * 分页查询，这里不需要用户登录，不经过拦截器
     * 如果用户登录的则同时返回点赞收藏信息，如果用户没有登录则返回基本信息
     *
     * @param token             设备token
     * @param pageNum           第几页
     * @param pageSize          每一页多少条数据
     * @param isCollectionLimit null表示不添加此条件，1表示查询收藏的记录，0表示查询为收藏的记录，
     *                          未登录用户在server层会忽略此选项
     * @return R
     */
    @GetMapping("/page")
    public R getAllPage(
            @CookieValue(value = "token", required = false) String token,
            Integer pageNum, Integer pageSize, Integer isCollectionLimit) {
        return new R(true, postService.selectPage(token, pageNum, pageSize, isCollectionLimit), "查询成功");
    }

    @GetMapping("/getOneAll/{postId}")
    public R getOneAll(
            @CookieValue(value = "token", required = false) String token,
            @PathVariable("postId") Integer postId
    ) {
        R r = new R();
        Post post = postService.selectOneAll(token, postId);
        if (post != null) {
            r.setFlag(true);
            r.setData(post);
            r.setMessage("查询成功");
        } else {
            r.setFlag(false);
            r.setMessage("查询失败。没有此帖子或数据库异常！");
        }

        return r;
    }

}
